using System;
using System.Reflection;
using System.Windows.Media;
using Microsoft.SmallBasic.Library;
using Math = System.Math;

namespace SmallBasicFun
{
    /// <summary>
    /// Every color under the rainbow, and different ways to get them. 
    /// </summary>
    [SmallBasicType]
    public static class Colors
    {
        /// <summary>
        /// This is the same as "IndianRed"
        /// </summary>
        public static Primitive IndianRed
        {
            get { return new Primitive("IndianRed"); }
        }

        /// <summary>
        /// This is the same as "Blue"
        /// </summary>
        public static Primitive Blue
        {
            get { return new Primitive("Blue"); }
        }

        /// <summary>
        /// This is the same as "Purple"
        /// </summary>
        public static Primitive Purple
        {
            get { return new Primitive("Purple"); }
        }

        /// <summary>
        /// This is the same as "LightCoral"
        /// </summary>
        public static Primitive LightCoral
        {
            get { return new Primitive("LightCoral"); }
        }

        /// <summary>
        /// This is the same as "Salmon"
        /// </summary>
        public static Primitive Salmon
        {
            get { return new Primitive("Salmon"); }
        }

        /// <summary>
        /// This is the same as "DarkSalmon"
        /// </summary>
        public static Primitive DarkSalmon
        {
            get { return new Primitive("DarkSalmon"); }
        }

        /// <summary>
        /// This is the same as "LightSalmon"
        /// </summary>
        public static Primitive LightSalmon
        {
            get { return new Primitive("LightSalmon"); }
        }

        /// <summary>
        /// This is the same as "Crimson"
        /// </summary>
        public static Primitive Crimson
        {
            get { return new Primitive("Crimson"); }
        }

        /// <summary>
        /// This is the same as "Red"
        /// </summary>
        public static Primitive Red
        {
            get { return new Primitive("Red"); }
        }

        /// <summary>
        /// This is the same as "FireBrick"
        /// </summary>
        public static Primitive FireBrick
        {
            get { return new Primitive("FireBrick"); }
        }

        /// <summary>
        /// This is the same as "DarkRed"
        /// </summary>
        public static Primitive DarkRed
        {
            get { return new Primitive("DarkRed"); }
        }


        /// <summary>
        /// This is the same as "Pink"
        /// </summary>
        public static Primitive Pink
        {
            get { return new Primitive("Pink"); }
        }

        /// <summary>
        /// This is the same as "LightPink"
        /// </summary>
        public static Primitive LightPink
        {
            get { return new Primitive("LightPink"); }
        }

        /// <summary>
        /// This is the same as "HotPink"
        /// </summary>
        public static Primitive HotPink
        {
            get { return new Primitive("HotPink"); }
        }

        /// <summary>
        /// This is the same as "DeepPink"
        /// </summary>
        public static Primitive DeepPink
        {
            get { return new Primitive("DeepPink"); }
        }

        /// <summary>
        /// This is the same as "MediumVioletRed"
        /// </summary>
        public static Primitive MediumVioletRed
        {
            get { return new Primitive("MediumVioletRed"); }
        }

        /// <summary>
        /// This is the same as "PaleVioletRed"
        /// </summary>
        public static Primitive PaleVioletRed
        {
            get { return new Primitive("PaleVioletRed"); }
        }


        /// <summary>
        /// This is the same as "Coral"
        /// </summary>
        public static Primitive Coral
        {
            get { return new Primitive("Coral"); }
        }

        /// <summary>
        /// This is the same as "Tomato"
        /// </summary>
        public static Primitive Tomato
        {
            get { return new Primitive("Tomato"); }
        }

        /// <summary>
        /// This is the same as "OrangeRed"
        /// </summary>
        public static Primitive OrangeRed
        {
            get { return new Primitive("OrangeRed"); }
        }

        /// <summary>
        /// This is the same as "DarkOrange"
        /// </summary>
        public static Primitive DarkOrange
        {
            get { return new Primitive("DarkOrange"); }
        }

        /// <summary>
        /// This is the same as "Orange"
        /// </summary>
        public static Primitive Orange
        {
            get { return new Primitive("Orange"); }
        }


        /// <summary>
        /// This is the same as "Gold"
        /// </summary>
        public static Primitive Gold
        {
            get { return new Primitive("Gold"); }
        }

        /// <summary>
        /// This is the same as "Yellow"
        /// </summary>
        public static Primitive Yellow
        {
            get { return new Primitive("Yellow"); }
        }

        /// <summary>
        /// This is the same as "LightYellow"
        /// </summary>
        public static Primitive LightYellow
        {
            get { return new Primitive("LightYellow"); }
        }

        /// <summary>
        /// This is the same as "LemonChiffon"
        /// </summary>
        public static Primitive LemonChiffon
        {
            get { return new Primitive("LemonChiffon"); }
        }

        /// <summary>
        /// This is the same as "LightGoldenrodYellow"
        /// </summary>
        public static Primitive LightGoldenrodYellow
        {
            get { return new Primitive("LightGoldenrodYellow"); }
        }

        /// <summary>
        /// This is the same as "PapayaWhip"
        /// </summary>
        public static Primitive PapayaWhip
        {
            get { return new Primitive("PapayaWhip"); }
        }

        /// <summary>
        /// This is the same as "Moccasin"
        /// </summary>
        public static Primitive Moccasin
        {
            get { return new Primitive("Moccasin"); }
        }

        /// <summary>
        /// This is the same as "PeachPuff"
        /// </summary>
        public static Primitive PeachPuff
        {
            get { return new Primitive("PeachPuff"); }
        }

        /// <summary>
        /// This is the same as "PaleGoldenrod"
        /// </summary>
        public static Primitive PaleGoldenrod
        {
            get { return new Primitive("PaleGoldenrod"); }
        }

        /// <summary>
        /// This is the same as "Khaki"
        /// </summary>
        public static Primitive Khaki
        {
            get { return new Primitive("Khaki"); }
        }

        /// <summary>
        /// This is the same as "DarkKhaki"
        /// </summary>
        public static Primitive DarkKhaki
        {
            get { return new Primitive("DarkKhaki"); }
        }

        /// <summary>
        /// This is the same as "Lavender"
        /// </summary>
        public static Primitive Lavender
        {
            get { return new Primitive("Lavender"); }
        }

        /// <summary>
        /// This is the same as "Thistle"
        /// </summary>
        public static Primitive Thistle
        {
            get { return new Primitive("Thistle"); }
        }

        /// <summary>
        /// This is the same as "Plum"
        /// </summary>
        public static Primitive Plum
        {
            get { return new Primitive("Plum"); }
        }

        /// <summary>
        /// This is the same as "Violet"
        /// </summary>
        public static Primitive Violet
        {
            get { return new Primitive("Violet"); }
        }

        /// <summary>
        /// This is the same as "Orchid"
        /// </summary>
        public static Primitive Orchid
        {
            get { return new Primitive("Orchid"); }
        }

        /// <summary>
        /// This is the same as "Fuchsia"
        /// </summary>
        public static Primitive Fuchsia
        {
            get { return new Primitive("Fuchsia"); }
        }

        /// <summary>
        /// This is the same as "Magenta"
        /// </summary>
        public static Primitive Magenta
        {
            get { return new Primitive("Magenta"); }
        }

        /// <summary>
        /// This is the same as "MediumOrchid"
        /// </summary>
        public static Primitive MediumOrchid
        {
            get { return new Primitive("MediumOrchid"); }
        }

        /// <summary>
        /// This is the same as "MediumPurple"
        /// </summary>
        public static Primitive MediumPurple
        {
            get { return new Primitive("MediumPurple"); }
        }

        /// <summary>
        /// This is the same as "BlueViolet"
        /// </summary>
        public static Primitive BlueViolet
        {
            get { return new Primitive("BlueViolet"); }
        }

        /// <summary>
        /// This is the same as "DarkViolet"
        /// </summary>
        public static Primitive DarkViolet
        {
            get { return new Primitive("DarkViolet"); }
        }

        /// <summary>
        /// This is the same as "DarkOrchid"
        /// </summary>
        public static Primitive DarkOrchid
        {
            get { return new Primitive("DarkOrchid"); }
        }

        /// <summary>
        /// This is the same as "DarkMagenta"
        /// </summary>
        public static Primitive DarkMagenta
        {
            get { return new Primitive("DarkMagenta"); }
        }

        /// <summary>
        /// This is the same as "Indigo"
        /// </summary>
        public static Primitive Indigo
        {
            get { return new Primitive("Indigo"); }
        }

        /// <summary>
        /// This is the same as "SlateBlue"
        /// </summary>
        public static Primitive SlateBlue
        {
            get { return new Primitive("SlateBlue"); }
        }

        /// <summary>
        /// This is the same as "DarkSlateBlue"
        /// </summary>
        public static Primitive DarkSlateBlue
        {
            get { return new Primitive("DarkSlateBlue"); }
        }

        /// <summary>
        /// This is the same as "MediumSlateBlue"
        /// </summary>
        public static Primitive MediumSlateBlue
        {
            get { return new Primitive("MediumSlateBlue"); }
        }


        /// <summary>
        /// This is the same as "GreenYellow"
        /// </summary>
        public static Primitive GreenYellow
        {
            get { return new Primitive("GreenYellow"); }
        }

        /// <summary>
        /// This is the same as "Chartreuse"
        /// </summary>
        public static Primitive Chartreuse
        {
            get { return new Primitive("Chartreuse"); }
        }

        /// <summary>
        /// This is the same as "LawnGreen"
        /// </summary>
        public static Primitive LawnGreen
        {
            get { return new Primitive("LawnGreen"); }
        }

        /// <summary>
        /// This is the same as "Lime"
        /// </summary>
        public static Primitive Lime
        {
            get { return new Primitive("Lime"); }
        }

        /// <summary>
        /// This is the same as "LimeGreen"
        /// </summary>
        public static Primitive LimeGreen
        {
            get { return new Primitive("LimeGreen"); }
        }

        /// <summary>
        /// This is the same as "PaleGreen"
        /// </summary>
        public static Primitive PaleGreen
        {
            get { return new Primitive("PaleGreen"); }
        }

        /// <summary>
        /// This is the same as "LightGreen"
        /// </summary>
        public static Primitive LightGreen
        {
            get { return new Primitive("LightGreen"); }
        }

        /// <summary>
        /// This is the same as "MediumSpringGreen"
        /// </summary>
        public static Primitive MediumSpringGreen
        {
            get { return new Primitive("MediumSpringGreen"); }
        }

        /// <summary>
        /// This is the same as "SpringGreen"
        /// </summary>
        public static Primitive SpringGreen
        {
            get { return new Primitive("SpringGreen"); }
        }

        /// <summary>
        /// This is the same as "MediumSeaGreen"
        /// </summary>
        public static Primitive MediumSeaGreen
        {
            get { return new Primitive("MediumSeaGreen"); }
        }

        /// <summary>
        /// This is the same as "SeaGreen"
        /// </summary>
        public static Primitive SeaGreen
        {
            get { return new Primitive("SeaGreen"); }
        }

        /// <summary>
        /// This is the same as "ForestGreen"
        /// </summary>
        public static Primitive ForestGreen
        {
            get { return new Primitive("ForestGreen"); }
        }

        /// <summary>
        /// This is the same as "Green"
        /// </summary>
        public static Primitive Green
        {
            get { return new Primitive("Green"); }
        }

        /// <summary>
        /// This is the same as "DarkGreen"
        /// </summary>
        public static Primitive DarkGreen
        {
            get { return new Primitive("DarkGreen"); }
        }

        /// <summary>
        /// This is the same as "YellowGreen"
        /// </summary>
        public static Primitive YellowGreen
        {
            get { return new Primitive("YellowGreen"); }
        }

        /// <summary>
        /// This is the same as "OliveDrab"
        /// </summary>
        public static Primitive OliveDrab
        {
            get { return new Primitive("OliveDrab"); }
        }

        /// <summary>
        /// This is the same as "Olive"
        /// </summary>
        public static Primitive Olive
        {
            get { return new Primitive("Olive"); }
        }

        /// <summary>
        /// This is the same as "DarkOliveGreen"
        /// </summary>
        public static Primitive DarkOliveGreen
        {
            get { return new Primitive("DarkOliveGreen"); }
        }

        /// <summary>
        /// This is the same as "MediumAquamarine"
        /// </summary>
        public static Primitive MediumAquamarine
        {
            get { return new Primitive("MediumAquamarine"); }
        }

        /// <summary>
        /// This is the same as "DarkSeaGreen"
        /// </summary>
        public static Primitive DarkSeaGreen
        {
            get { return new Primitive("DarkSeaGreen"); }
        }

        /// <summary>
        /// This is the same as "LightSeaGreen"
        /// </summary>
        public static Primitive LightSeaGreen
        {
            get { return new Primitive("LightSeaGreen"); }
        }

        /// <summary>
        /// This is the same as "DarkCyan"
        /// </summary>
        public static Primitive DarkCyan
        {
            get { return new Primitive("DarkCyan"); }
        }

        /// <summary>
        /// This is the same as "Teal"
        /// </summary>
        public static Primitive Teal
        {
            get { return new Primitive("Teal"); }
        }


        /// <summary>
        /// This is the same as "Aqua"
        /// </summary>
        public static Primitive Aqua
        {
            get { return new Primitive("Aqua"); }
        }

        /// <summary>
        /// This is the same as "Cyan"
        /// </summary>
        public static Primitive Cyan
        {
            get { return new Primitive("Cyan"); }
        }

        /// <summary>
        /// This is the same as "LightCyan"
        /// </summary>
        public static Primitive LightCyan
        {
            get { return new Primitive("LightCyan"); }
        }

        /// <summary>
        /// This is the same as "PaleTurquoise"
        /// </summary>
        public static Primitive PaleTurquoise
        {
            get { return new Primitive("PaleTurquoise"); }
        }

        /// <summary>
        /// This is the same as "Aquamarine"
        /// </summary>
        public static Primitive Aquamarine
        {
            get { return new Primitive("Aquamarine"); }
        }

        /// <summary>
        /// This is the same as "Turquoise"
        /// </summary>
        public static Primitive Turquoise
        {
            get { return new Primitive("Turquoise"); }
        }

        /// <summary>
        /// This is the same as "MediumTurquoise"
        /// </summary>
        public static Primitive MediumTurquoise
        {
            get { return new Primitive("MediumTurquoise"); }
        }

        /// <summary>
        /// This is the same as "DarkTurquoise"
        /// </summary>
        public static Primitive DarkTurquoise
        {
            get { return new Primitive("DarkTurquoise"); }
        }

        /// <summary>
        /// This is the same as "CadetBlue"
        /// </summary>
        public static Primitive CadetBlue
        {
            get { return new Primitive("CadetBlue"); }
        }

        /// <summary>
        /// This is the same as "SteelBlue"
        /// </summary>
        public static Primitive SteelBlue
        {
            get { return new Primitive("SteelBlue"); }
        }

        /// <summary>
        /// This is the same as "LightSteelBlue"
        /// </summary>
        public static Primitive LightSteelBlue
        {
            get { return new Primitive("LightSteelBlue"); }
        }

        /// <summary>
        /// This is the same as "PowderBlue"
        /// </summary>
        public static Primitive PowderBlue
        {
            get { return new Primitive("PowderBlue"); }
        }

        /// <summary>
        /// This is the same as "LightBlue"
        /// </summary>
        public static Primitive LightBlue
        {
            get { return new Primitive("LightBlue"); }
        }

        /// <summary>
        /// This is the same as "SkyBlue"
        /// </summary>
        public static Primitive SkyBlue
        {
            get { return new Primitive("SkyBlue"); }
        }

        /// <summary>
        /// This is the same as "LightSkyBlue"
        /// </summary>
        public static Primitive LightSkyBlue
        {
            get { return new Primitive("LightSkyBlue"); }
        }

        /// <summary>
        /// This is the same as "DeepSkyBlue"
        /// </summary>
        public static Primitive DeepSkyBlue
        {
            get { return new Primitive("DeepSkyBlue"); }
        }

        /// <summary>
        /// This is the same as "DodgerBlue"
        /// </summary>
        public static Primitive DodgerBlue
        {
            get { return new Primitive("DodgerBlue"); }
        }

        /// <summary>
        /// This is the same as "CornflowerBlue"
        /// </summary>
        public static Primitive CornflowerBlue
        {
            get { return new Primitive("CornflowerBlue"); }
        }

        /// <summary>
        /// This is the same as "RoyalBlue"
        /// </summary>
        public static Primitive RoyalBlue
        {
            get { return new Primitive("RoyalBlue"); }
        }

        /// <summary>
        /// This is the same as "MediumBlue"
        /// </summary>
        public static Primitive MediumBlue
        {
            get { return new Primitive("MediumBlue"); }
        }

        /// <summary>
        /// This is the same as "DarkBlue"
        /// </summary>
        public static Primitive DarkBlue
        {
            get { return new Primitive("DarkBlue"); }
        }

        /// <summary>
        /// This is the same as "Navy"
        /// </summary>
        public static Primitive Navy
        {
            get { return new Primitive("Navy"); }
        }

        /// <summary>
        /// This is the same as "MidnightBlue"
        /// </summary>
        public static Primitive MidnightBlue
        {
            get { return new Primitive("MidnightBlue"); }
        }


        /// <summary>
        /// This is the same as "Cornsilk"
        /// </summary>
        public static Primitive Cornsilk
        {
            get { return new Primitive("Cornsilk"); }
        }

        /// <summary>
        /// This is the same as "BlanchedAlmond"
        /// </summary>
        public static Primitive BlanchedAlmond
        {
            get { return new Primitive("BlanchedAlmond"); }
        }

        /// <summary>
        /// This is the same as "Bisque"
        /// </summary>
        public static Primitive Bisque
        {
            get { return new Primitive("Bisque"); }
        }

        /// <summary>
        /// This is the same as "NavajoWhite"
        /// </summary>
        public static Primitive NavajoWhite
        {
            get { return new Primitive("NavajoWhite"); }
        }

        /// <summary>
        /// This is the same as "Wheat"
        /// </summary>
        public static Primitive Wheat
        {
            get { return new Primitive("Wheat"); }
        }

        /// <summary>
        /// This is the same as "BurlyWood"
        /// </summary>
        public static Primitive BurlyWood
        {
            get { return new Primitive("BurlyWood"); }
        }

        /// <summary>
        /// This is the same as "Tan"
        /// </summary>
        public static Primitive Tan
        {
            get { return new Primitive("Tan"); }
        }

        /// <summary>
        /// This is the same as "RosyBrown"
        /// </summary>
        public static Primitive RosyBrown
        {
            get { return new Primitive("RosyBrown"); }
        }

        /// <summary>
        /// This is the same as "SandyBrown"
        /// </summary>
        public static Primitive SandyBrown
        {
            get { return new Primitive("SandyBrown"); }
        }

        /// <summary>
        /// This is the same as "Goldenrod"
        /// </summary>
        public static Primitive Goldenrod
        {
            get { return new Primitive("Goldenrod"); }
        }

        /// <summary>
        /// This is the same as "DarkGoldenrod"
        /// </summary>
        public static Primitive DarkGoldenrod
        {
            get { return new Primitive("DarkGoldenrod"); }
        }

        /// <summary>
        /// This is the same as "Peru"
        /// </summary>
        public static Primitive Peru
        {
            get { return new Primitive("Peru"); }
        }

        /// <summary>
        /// This is the same as "Chocolate"
        /// </summary>
        public static Primitive Chocolate
        {
            get { return new Primitive("Chocolate"); }
        }

        /// <summary>
        /// This is the same as "SaddleBrown"
        /// </summary>
        public static Primitive SaddleBrown
        {
            get { return new Primitive("SaddleBrown"); }
        }

        /// <summary>
        /// This is the same as "Sienna"
        /// </summary>
        public static Primitive Sienna
        {
            get { return new Primitive("Sienna"); }
        }

        /// <summary>
        /// This is the same as "Brown"
        /// </summary>
        public static Primitive Brown
        {
            get { return new Primitive("Brown"); }
        }

        /// <summary>
        /// This is the same as "Maroon"
        /// </summary>
        public static Primitive Maroon
        {
            get { return new Primitive("Maroon"); }
        }


        /// <summary>
        /// This is the same as "White"
        /// </summary>
        public static Primitive White
        {
            get { return new Primitive("White"); }
        }

        /// <summary>
        /// This is the same as "Snow"
        /// </summary>
        public static Primitive Snow
        {
            get { return new Primitive("Snow"); }
        }

        /// <summary>
        /// This is the same as "Honeydew"
        /// </summary>
        public static Primitive Honeydew
        {
            get { return new Primitive("Honeydew"); }
        }

        /// <summary>
        /// This is the same as "MintCream"
        /// </summary>
        public static Primitive MintCream
        {
            get { return new Primitive("MintCream"); }
        }

        /// <summary>
        /// This is the same as "Azure"
        /// </summary>
        public static Primitive Azure
        {
            get { return new Primitive("Azure"); }
        }

        /// <summary>
        /// This is the same as "AliceBlue"
        /// </summary>
        public static Primitive AliceBlue
        {
            get { return new Primitive("AliceBlue"); }
        }

        /// <summary>
        /// This is the same as "GhostWhite"
        /// </summary>
        public static Primitive GhostWhite
        {
            get { return new Primitive("GhostWhite"); }
        }

        /// <summary>
        /// This is the same as "WhiteSmoke"
        /// </summary>
        public static Primitive WhiteSmoke
        {
            get { return new Primitive("WhiteSmoke"); }
        }

        /// <summary>
        /// This is the same as "Seashell"
        /// </summary>
        public static Primitive Seashell
        {
            get { return new Primitive("Seashell"); }
        }

        /// <summary>
        /// This is the same as "Beige"
        /// </summary>
        public static Primitive Beige
        {
            get { return new Primitive("Beige"); }
        }

        /// <summary>
        /// This is the same as "OldLace"
        /// </summary>
        public static Primitive OldLace
        {
            get { return new Primitive("OldLace"); }
        }

        /// <summary>
        /// This is the same as "FloralWhite"
        /// </summary>
        public static Primitive FloralWhite
        {
            get { return new Primitive("FloralWhite"); }
        }

        /// <summary>
        /// This is the same as "Ivory"
        /// </summary>
        public static Primitive Ivory
        {
            get { return new Primitive("Ivory"); }
        }

        /// <summary>
        /// This is the same as "AntiqueWhite"
        /// </summary>
        public static Primitive AntiqueWhite
        {
            get { return new Primitive("AntiqueWhite"); }
        }

        /// <summary>
        /// This is the same as "Linen"
        /// </summary>
        public static Primitive Linen
        {
            get { return new Primitive("Linen"); }
        }

        /// <summary>
        /// This is the same as "LavenderBlush"
        /// </summary>
        public static Primitive LavenderBlush
        {
            get { return new Primitive("LavenderBlush"); }
        }

        /// <summary>
        /// This is the same as "MistyRose"
        /// </summary>
        public static Primitive MistyRose
        {
            get { return new Primitive("MistyRose"); }
        }


        /// <summary>
        /// This is the same as "Gainsboro"
        /// </summary>
        public static Primitive Gainsboro
        {
            get { return new Primitive("Gainsboro"); }
        }

        /// <summary>
        /// This is the same as "LightGray"
        /// </summary>
        public static Primitive LightGray
        {
            get { return new Primitive("LightGray"); }
        }

        /// <summary>
        /// This is the same as "Silver"
        /// </summary>
        public static Primitive Silver
        {
            get { return new Primitive("Silver"); }
        }

        /// <summary>
        /// This is the same as "DarkGray"
        /// </summary>
        public static Primitive DarkGray
        {
            get { return new Primitive("DarkGray"); }
        }

        /// <summary>
        /// This is the same as "Gray"
        /// </summary>
        public static Primitive Gray
        {
            get { return new Primitive("Gray"); }
        }

        /// <summary>
        /// This is the same as "DimGray"
        /// </summary>
        public static Primitive DimGray
        {
            get { return new Primitive("DimGray"); }
        }

        /// <summary>
        /// This is the same as "LightSlateGray"
        /// </summary>
        public static Primitive LightSlateGray
        {
            get { return new Primitive("LightSlateGray"); }
        }

        /// <summary>
        /// This is the same as "SlateGray"
        /// </summary>
        public static Primitive SlateGray
        {
            get { return new Primitive("SlateGray"); }
        }

        /// <summary>
        /// This is the same as "DarkSlateGray"
        /// </summary>
        public static Primitive DarkSlateGray
        {
            get { return new Primitive("DarkSlateGray"); }
        }

        /// <summary>
        /// This is the same as "Black"
        /// </summary>
        public static Primitive Black
        {
            get { return new Primitive("Black"); }
        }

        /// <summary>
        /// Picks a color at Random
        /// </summary>
        /// <example> Tortise.SetPenColor(Colors.GetRandomColor())</example>
        /// <returns>
        ///  The randomly selected color
        /// </returns>
        public static Primitive GetRandomColor()
        {
            return GraphicsWindow.GetRandomColor();
        }

        /// <summary>
        /// Makes a color gradually darker
        /// </summary>
        /// <example> darkenedColor = Colors.Darken("red")</example>
        /// <param name="color">The color you want a darker shade of</param>
        /// <returns>
        ///  The Darker version of the color passed in
        /// </returns>
        public static Primitive Darken(Primitive color)
        {
            return ChangeColor(color, reduce);
        }

        /// <summary>
        /// Makes a color gradually lighter
        /// </summary>
        /// <example> lightenedColor = Colors.Lighten("green")</example>
        /// <param name="color">The color you want a lighter shade of</param>
        /// <returns>
        ///  The Lighter version of the color passed in
        /// </returns>
        public static Primitive Lighten(Primitive color)
        {
            return ChangeColor(color, increase);
        }

        private static Primitive ChangeColor(Primitive color, Func<int, int> func)
        {
            Color c;
            try
            {
                c = (Color) ColorConverter.ConvertFromString(color);
            }
            catch (Exception)
            {
                return Black;
            }

            return GraphicsWindow.GetColorFromRGB(func(c.R), func(c.G), func(c.B));
        }

        private static int reduce(int b)
        {
            b = b - 10;
            return Math.Max(0, b);
        }

        private static int increase(int b)
        {
            b = b + 10;
            return Math.Min(255, b);
        }


        public static bool CompareColors(Primitive color1, Primitive color2)
        {
            if (color1 == null || color2 == null)
            {
                return false;
            }

            try
            {
                object c1 = ColorConverter.ConvertFromString(color1);
                object c2 = ColorConverter.ConvertFromString(color2);
                return c1.ToString() == c2.ToString();
            }
            catch (Exception)
            {
                return false;
            }
        }

        public static String GetNameFor(Primitive value)
        {
            string testing;
            try
            {
                testing = ColorConverter.ConvertFromString(value).ToString();
            }
            catch (Exception)
            {
                return value;
            }
            var c = new ColorConverter();
            foreach (PropertyInfo color in typeof (Colors).GetProperties())
            {
                string name = color.Name;
                string original = ColorConverter.ConvertFromString(name).ToString();
                if (original == testing)
                {
                    return name;
                }
            }
            return value.ToString();
        }
    }
}